home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / text / misc / PWIDXM.lha / MakeIndex next >
Text File  |  1994-10-12  |  4KB  |  227 lines

  1. /* COPYRIGHT 1992 by Software Industry & General Hardware */
  2. /* All Rights Reserved                                    */
  3. /* Software Industry & General Hardware is not responsible
  4.    for loss of data, damage to an files, or anything else.
  5.    Use of this product is at your own risk.               */
  6.  
  7. SIGNAL ON BREAK_C
  8. SIGNAL ON BREAK_D
  9. SIGNAL ON BREAK_E
  10. SIGNAL ON BREAK_F
  11.  
  12. SIGNAL ON SYNTAX
  13. SIGNAL ON IOERR
  14.  
  15. OPTIONS RESULTS
  16.  
  17. CALL OPEN(ER, "T:ErrorFile", "WRITE" )
  18. CALL WRITELN(ER, "Version V1.01B")
  19.  
  20. /* Check for existing Phrase File */
  21. IF ~EXISTS( "T:PhraseFile" ) THEN DO
  22.   REQUEST1 '"No Phrase File Found."'
  23.   EXIT 0
  24. END
  25.  
  26. /* If we got here then the Phrase file exists */
  27.  
  28. IF EXISTS( "T:TrashPhraseFile" ) THEN ADDRESS COMMAND "DELETE > NIL: T:TrashPhraseFile"
  29. ADDRESS COMMAND "RENAME T:PhraseFile T:TrashPhraseFile"
  30. ADDRESS COMMAND "SORT T:TrashPhraseFile T:PhraseFile"
  31. ADDRESS COMMAND "DELETE T:TrashPhraseFile"
  32.  
  33.  /* Phrase file is sorted and stripped of dups */
  34. CALL OPEN(PF, "T:PhraseFile", "READ" )
  35.  
  36. ADDRESS 'ProWrite'
  37.  
  38. DRAWOFF
  39. DOCNAME
  40. DocumentName = RESULT
  41.  
  42. Window DocumentName
  43.  
  44. CurDoc = DocumentName
  45. IF CurDoc == "" THEN DO
  46.   REQUEST1 '"NO Index Generated"'
  47.   EXIT 0
  48. END
  49.  
  50. MOVEBEGINDOC
  51. CURRENTPAGE
  52. StartPage = RESULT
  53.  
  54. MOVEENDDOC
  55.  
  56. CURRENTPAGE
  57. EndingPage = RESULT
  58.  
  59. IF RC ~= 0 THEN DO
  60.   WRITLEN(ER, "EndingPage: "||EndingPage)
  61.   WRITELN(ER, "RC got an error on getting Ending page Result: "||RC)
  62.   EXIT RC
  63. END
  64.  
  65. EndingPage = EndingPage + 1
  66.  
  67. CALL WRITELN(ER, "Ending Page: "||EndingPage)
  68. CALL WRITELN(ER, "StartPage  : "||StartPage )
  69.  
  70. EndingPage = 3
  71.  
  72. DRAWOFF
  73. CurDoc = CurDoc||".idx"
  74.  
  75. NEW
  76. COLORBLACK
  77. ALIGNCENTER
  78. TYPE "Index for "
  79. TYPE DocumentName
  80. NEWPARAGRAPH
  81. TABLEFT
  82. ADDTAB 3000
  83. ALIGNLEFT
  84.  
  85. SAVEAS CurDoc
  86. CLOSE
  87. OPEN CurDoc
  88.  
  89. Window DocumentName
  90.  
  91. AlphaGroup = ""
  92.  
  93. MyPFCount = 1
  94.  
  95. MOREPAGES:
  96.   SETFIND WHOLEWORD NOMATCHCASE
  97.   CALL WRITELN(ER, "MorePages")
  98.   WindowNoFront DocumentName
  99.   CurPage = D2C(9) /* Tab */
  100.   Phrase = READLN(PF)
  101.  
  102.   IF EOF(PF) THEN SIGNAL NOMOREPF
  103.   MyPFCount = MyPFCount + 1
  104.  
  105.   IF MyPFCount == 15 THEN DO
  106.    CALL WRITELN(ER, "MyPFCount exceeds 15")
  107.    EXIT(10)
  108.   END
  109.  
  110.   Temp = TRANSLATE(Phrase)
  111.   Temp = LEFT(Temp,1)
  112.   IF Temp ~= AlphaGroup THEN CALL NextAlphaHeader()
  113.   WindowNoFront DocumentName
  114.   MOVEBEGINDOC
  115.   SETFINDTEXT Phrase
  116.   CURRENTPAGE
  117.   LastPage = RESULT - 1
  118.   ThisPage = LastPage + 1
  119.   Done = 0
  120.   MySearchCount = 0
  121.  
  122. NOTDONE:
  123.    SIGNAL ON ERROR
  124.    FINDNEXT NOPROMPT
  125.    SIGNAL GOON
  126.  
  127. ERROR:
  128.   IF RC == 10 THEN SIGNAL DONEXTENTRY
  129.  
  130. GOON:
  131.    Done = RC
  132.  
  133.    MySearchCount = MySearchCount + 1
  134.    IF MySearchCount == 10 THEN DO
  135.      CALL WRITELN(ER, "MySearchCount exceeds 10")
  136.      EXIT(10)
  137.    END
  138.  
  139.    CURRENTPAGE
  140.    ThisPage = RESULT
  141.  
  142.    IF Done == 0 THEN DO
  143.      IF ThisPage ~= LastPage THEN DO
  144.        CurPage = CurPage||ThisPage||" "
  145.        LastPage = ThisPage
  146.        IF (ThisPage + 1) == EndingPage THEN SIGNAL DONEXTENTRY
  147.      END
  148.      ELSE DO
  149.        NextPage = ThisPage + 1
  150.        GOTOPAGE NextPage
  151.      END
  152.    END
  153.    ELSE DO
  154.      CURRENTPAGE
  155.      ThisPage = RESULT
  156.      NextPage = ThisPage + 1
  157.      GOTOPAGE NextPage
  158.    END
  159.   SIGNAL NOTDONE
  160.  
  161. DONEXTENTRY:
  162. /*  DRAWON */
  163.   Tab = D2C(9)
  164.   Window CurDoc
  165.    MOVEENDDOC
  166.    TYPE Phrase
  167.    TYPE Tab
  168.    TYPE CurPage
  169.    NEWPARAGRAPH
  170.    SAVE CurDoc
  171. /*  DRAWOFF */
  172.   WindowNoFront DocumentName
  173.  SIGNAL MOREPAGES
  174.  
  175. NOMOREPF:
  176.  DRAWON
  177.  Window CurDoc
  178.  SELECTALL
  179.  COLORBLACK
  180.  SPACESINGLE
  181.  CURSORRIGHT
  182.  SAVE
  183.  
  184. /* if an error occured in obtaining our phrase then return
  185.    to ProWrite(TM) with complaint
  186. */
  187.  
  188. /* return with success status */
  189.  CLOSE(ER)
  190.  EXIT(0)
  191.  
  192. NextAlphaHeader:
  193.   WindowNoFront CurDoc
  194.   MOVEENDDOC
  195.   COLORBLACK
  196.   ALIGNCENTER
  197.   AlphaGroup = LEFT(Phrase,1)
  198.   AlphaGroup = TRANSLATE( AlphaGroup )
  199.   STYLEBOLD
  200.   TYPE "- "
  201.   TYPE AlphaGroup
  202.   TYPE " -"
  203.   STYLEPLAIN
  204.   NEWPARAGRAPH
  205.   ALIGNLEFT
  206.   WindowNoFront DocumentName
  207.  RETURN 0
  208.  
  209. BREAK_C:
  210. BREAK_D:
  211. BREAK_E:
  212. BREAK_F:
  213.   CALL WRITELN(ER, 'Got a FAILURE error.')
  214. DIFFERROR:
  215.   CALL WRITELN(ER, 'Got an ERROR error.')
  216. SYNTAX:
  217.   CALL WRITELN(ER, 'Got a SYNTAX error.')
  218. IOERR:
  219.   CALL WRITELN(ER, 'Got an IOERR error.')
  220.   CALL WRITELN(ER, "RC: "RC)
  221.   CALL WRITELN(ER, "Got an error")
  222.   CALL WRITELN(ER, "Error was at line: "SIGL)
  223.   CALL WRITELN(ER, "Error was "RC)
  224.   CALL WRITELN(ER, ErrorText(RC))
  225.   CLOSE(ER)
  226.  EXIT 0
  227.